#ifndef __SDLTOOL_H_
#define __SDLTOOL_H_

#include "SDL2/SDL.h"
#include <iostream>
#include "SDL2/SDL_ttf.h"
#include "SDL2/SDL_image.h"
#include <stdexcept>
#include <string>

using namespace std;

class SDLTool
{
public:
    SDLTool();
    ~SDLTool();
    /**
     * @brief 将指定图片加载成纹理
     * 
     * @param renderer : 2D渲染上下文
     * @param file ： 需要加载的图片
     * @return SDL_Texture* ： 返回加载的纹理
     */
    static SDL_Texture* LoadImage(SDL_Renderer *renderer, string file);

    /**
     * @brief 将指定纹理绘制到指定的2D上下文中
     * 
     * @param renderer ： 2D上下文
     * @param tex : 需要绘制的纹理
     * @param x : 绘制到指定位置的x坐标
     * @param y ： 绘制到指定位置的y坐标
     * @param clip ： 需要使用源图片的位置及大小
     */
    static void ApplySurface( SDL_Renderer *renderer, SDL_Texture *tex, int x, int y, SDL_Rect *clip);

    /**
     * @brief 加载字符串信息为纹理
     * 
     * @param renderer ： 2D上下文
     * @param message : 需要显示的信息
     * @param fontFile ： 使用的字体
     * @param color ： 字体颜色
     * @param fontSize ： 字体大小
     * @return SDL_Texture* ： 返回字体的纹理 
     */
    static SDL_Texture* RenderText(SDL_Renderer *renderer, string message, string fontFile, SDL_Color color, int fontSize);

    /**
     * @brief  初始化sdl状态
     * 
     * @return int : 0：OK -1：Err
     */
    static int SDLInit();
private:
    
};

#endif //__SDLTOOL_H_